package com.spring.dive.a04wildcard;

import java.util.List;

/**
 * 泛型通配符
 */
public class GenericClass<T> {
    private T t;

    public GenericClass(T t) {
        this.t = t;
    }

    public T getT() {
        return t;
    }

    // 3.指定泛型的上限，只能是指定类型的上限调用【不可以填充元素-List】
    public <T> void print(GenericClass<? extends T> genericClass){
        System.out.println("------->"+genericClass);
    }
    public <T> void print(List<? extends Integer> list){
        //【不可以填充元素-List】
        //list.add(Integer.valueOf(100));
        System.out.println("------->"+list);
    }


    // 4.指定泛型的上限，只能是指定类型的下限调用【可以填充元素-List,但是不能保障元素】
    public <T> void print2(GenericClass<? super T> genericClass){
        System.out.println("------->"+genericClass);
    }
    public <T> void print2(List<? super Number> list){
        // 【可以填充元素-List,但是不能保障元素】
        list.add(Integer.valueOf(10));
        System.out.println("------->"+list);
    }

}
